package com.andersen.web.service;

import com.andersen.database.dao.*;
import com.andersen.database.entity.ComponentTypeEntity;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.log4j.Logger;

/**
 * Created with IntelliJ IDEA.
 * User: Avseenko Dmitrij
 * Date: 05.03.14
 * Time: 11:08
 * To change this template use File | Settings | File Templates.
 */

@Service
public class ComponentTypeService {

    private static final Logger LOG = Logger.getLogger(ComponentTypeService.class);

    @Autowired
    private ComponentTypeDao componentTypeDao;

    // Возвращаем список типов компонетов.
    public List<ComponentTypeEntity> getComponentsType(){
        return componentTypeDao.getComponentTypes();
    }

    // Возвращаем список подтипов компонетов по id типа(родителя).
    public List<ComponentTypeEntity> getCompotetnsSubTypeForId(long id){
        return componentTypeDao.getComponentSubTypesByParentId(id);
    }


    public ComponentTypeTree getComponentTypeTree() {
        return ComponentTypeTree.getTree(componentTypeDao);
    }

    // Возвращаем тип по id.
    public ComponentTypeEntity getById(long id) {
        return componentTypeDao.getTypeById(id);
    }

    // Добавление нового типа.
    public void addNewComponentType(String name){
        componentTypeDao.addNewComponentType(name);
    }

    // Добавление нового подтипа.
    public void addNewComponentSubType(String name,long parentId){
        componentTypeDao.addNewComponentSubType(name,parentId);
    }

    // Изменение информации о типе (название).
    public void editComponentType(long id, String name){
        componentTypeDao.editComponentType(id,name);
    }

    // Изменение информации о подтипе (название и родителя).
    public void editComponentSubType(long id, String name,long parentId){
        componentTypeDao.editComponentSubType(id,name,parentId);
    }

    // Удаление типа.
    public void removeComponentType(long id){
        componentTypeDao.removeComponentType(id);
    }

    // Проверка на наличие наследников у типа.
    public int getNumberOfHeirsType(long id){

        if(componentTypeDao.getNumberOfHeirsType(id) > 0)
            return 1;
        else
            return 0;
    }

    // Проверка на наличие наследников у подтипа.
    public int getNumberOfHeirsSubType(long id){

        if(componentTypeDao.getNumberOfHeirsSubType(id) > 0)
            return 1;
        else
            return 0;
    }
}
